package cn.lg.soar.system.api.utils;

import cn.lg.soar.common.algorithm.RSAPrivateKeyCoder;
import cn.lg.soar.common.algorithm.RSAPublicKeyCoder;
import cn.lg.soar.core.util.SoarSubscriber;
import cn.lg.soar.system.api.service.IRsaApi;

import java.security.NoSuchAlgorithmException;

/**
 * RSA工具
 * @author luguoxiang
 * @date 2025-07-15
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public class RsaUtils {

    private static IRsaApi api;
    static {
        SoarSubscriber.subscribeInit(applicationContext -> {
            api = applicationContext.getBean(IRsaApi.class);
        });
    }

    /**
     * 获取公钥
     * @return
     * @throws NoSuchAlgorithmException
     */
    public static byte[] getPublicKey(String bizType) {
        return api.getPublicKey(bizType);
    }

    /**
     * 获取私钥
     * @return
     */
    public static byte[] getPrivateKey(String bizType) {
        return api.getPrivateKey(bizType);
    }

    /**
     * 获取公钥base64格式
     * @param bizType
     * @return
     */
    public static String getPublicKeyStr(String bizType) {
        return api.getPublicKeyStr(bizType);
    }

    /**
     * 获取公钥密码器
     * @param bizType
     * @return
     */
    public static RSAPublicKeyCoder getPublicKeyCoder(String bizType) {
        return api.getPublicKeyCoder(bizType);
    }

    /**
     * 获取私钥密码器
     * @param bizType
     * @return
     */
    public static RSAPrivateKeyCoder getPrivateKeyCoder(String bizType) {
        return api.getPrivateKeyCoder(bizType);
    }

}
